// Script for OllyScript plugin
/*
////////////////////////////////////////////////// 
it's been a hard time finding all the HIGHMEM calls 'n fixing them
so, i took some time 'n made these scripts. hope it'll be helpfull for
guys with ASProtect. 

1. scripts are for ODBGScript 1.41 version
2. at the beginning of the script source, define the values accordingly, before running the scripts
3. when app is running 'n script has'nt shown SCRIPT FINISHED, abort the script manually

First Script - my_asprotect_HIGHMEM.txt 

this script logs all the highmem calls in log-HIGHMEM-calls.txt
log-HIGHMEM-calls-BIN.txt contains the BYTES in reverse order
for binary pasting in olly.

there's a prob here in log-HIGHMEM-calls-BIN.txt
sometimes addresses like 401204 will get reversed and 
log-HIGHMEM-calls-BIN.txt file will contain corresponding 
41240 not 041240 ... so edit the BIN file manually b4 binary
pasting and put an extra 0 before addresses like 41240

Support with:
ASProtect 2.0x
////////////////////////////////////////////////// 
*/ 

DEFINE_BEFORE_EXECUTION:

mov code_section,401000
mov code_section_size,33000


SCRIPT_START:

mov path1,".\log-HIGHMEM-calls.txt"
mov path2,".\log-HIGHMEM-calls-BIN.txt"

FIND_HIGHMEM_CALLS:
lc
mov counter,0
run

BINARY_SEARCH:
find eip,#807B20000F85????00003C01#
cmp $RESULT,0
je NOT_FOUND
mov bp_addr,$RESULT
bp bp_addr
L1: 
eob LOG
esto
jmp L1

jmp NOT_FOUND

LOG: 

cmp ebp,code_section
jb L1

cmp ebp,code_section + code_section_size
ja L1

add counter,1
eval "{counter}. {ebp}"
log $RESULT,""

wrta path1, $RESULT
wrta path1, "\r\n"

rev ebp
wrta path2, $RESULT
wrta path2, "\r\n"

eob LOG
esto
jmp L1



NOT_FOUND:
ret